/*
水仙花数是指一个 3 位数，它的每个位上的数字的3次幂之和等于它本身。
输出从零开始的水仙花数，不允许直接输出。
*/



/*
为了不直接输出,我只好定义一个数组并动态申请内存
为了把数字填充进去,我for循环了2次
第一次循环确定申请的内存大小,第二次来添加元素到数组中 
*/
#include <stdio.h>
#include <stdlib.h>
int main(){
	int number=0,cnt=0; 
	for(int x=100;x<1000;x++){
		
	    //获取每一位的数字 
        int ge=x/1%10;	
        int shi=x/10%10;
        int bai=x/100%10;
        
        //三次方后进行求和
        int sum=bai*bai*bai+shi*shi*shi+ge*ge*ge;
    
	    //找到所有符合的水仙花数  
	    if (sum==x){
		 number+=1;
	    }
	}
	int *a =(int *)malloc(number*sizeof(int));
	for(int x=100;x<1000;x++){
		
	    //获取每一位的数字 
        int ge=x/1%10;	
        int shi=x/10%10;
        int bai=x/100%10;
        
        //三次方后进行求和
        int sum=bai*bai*bai+shi*shi*shi+ge*ge*ge;
    
	    //找到所有符合的水仙花数  
	    if (sum==x){
		a[cnt]=x; 
		cnt+=1;
	    }
        free(a);
	}
	return 0;
}
